iT邦幫忙

DAY 2
1

天天CVE系列 第 2

Heartbleed~心臟流血了!! CVE-2014-0160

  • 分享至 

  • xImage
  •  

簡介

Heartbleed能讓攻擊者從伺服器記憶體中讀取 64 KB 的資料,利用傳送 heartbeat 的封包給伺服器,在封包中控制變數導致 memcpy 函數複製錯誤的記憶體資料,因而擷取記憶體中可能存在的機敏資料。記憶體中最嚴重可能包含 ssl private key、session cookie、使用者密碼等,因此可能因為這樣的漏洞導致伺服器遭到入侵或取得使用者帳號。 -- 《devco.re

Warning

https://www.openssl.org/news/secadv_20140407.txt <-- openssl安全通報

問題點

"戴夫寇爾執行長翁浩正表示,OpenSSL是一個用C語言撰寫的函式庫,根據Github上面的提交記錄,OpenSSL出問題的那行程式碼是在2011年12月31日22時59分57秒所提交的。

「Heartbeat是一個確認網站服務是否持續運作的服務,」翁浩正進一步解釋,當確認Heartbeat服務執行的封包回傳時,伺服器原本也應該要先確認封包大小以及使用者的權限後,再進行Heartbeat驗證。

不過,他指出,出現Heartbleed漏洞的OpenSSL版本,在執行Heartbeat服務時,因為函式庫沒有事先檢查所需要的回傳資料大小,可能是為了加快SSL溝通的速度,一律都傳回64KB大小的資料,而所回傳的資料,也並沒有驗證使用者是否有權限可以接收。

也就是說,當執行Heartbeat服務時,假設,如果原先只需回傳2KB的資料,但因為沒有事先確認原本所需資料的大小,當OpenSSL函式庫預設回傳64KB的資料,執行Heartbeat服務的伺服器就會把暫存在記憶體中其他62KB的資料,一併回傳。

翁浩正說:「這是一個撰寫C語言時,不應該出現的基本程式設計錯誤。」這種確認欄位資料的檢查,其實是所有程式撰寫時的基本功夫,不論是有心或是無意導致這樣的漏洞,會導致Heartbeat預設回傳64KB資料時,造成網站機敏資料外洩。" -- 《ithome

簡單來說,就是最一般的資料權限與檔案大小處理不當,造成使用Heartbeat服務時lib會將存在記憶體中隨意位址的62KB回傳,又因為沒有權限的檢查,而造成每個人都可以藉由重複利用一直取得server端的記憶體資料。這在一開始學習C語言時就是一直會被強調的問題,因此平時就要檢查code,以避免未來不可預期的損失。

Heartbleed檢測:
https://filippo.io/Heartbleed/

結論

​馬上更新openssl版本就可以避免掉這個問題,但目前仍有為數眾多的網站沒有更新,實在是令人擔憂企業對於資安的重視程度!


上一篇
BASH危機:CVE-2014-6271、CVE-2014-7169、CVE-2014-6277
下一篇
SQL Injection - CVE-2014-7153
系列文
天天CVE30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言